/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package verins.DAO;

import java.util.HashMap;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.swing.JOptionPane;
import verins.beans.Procesoempadronamiento;

/**
 *
 * @author hectdx
 */
public class ProcesoEmpadronamientoDAO {
 
      public boolean save(Procesoempadronamiento proceso){
      boolean rOK=false;
      //Etapaprocesoempadronamiento etapaxproceso=null;
      try{
        // Create the EntityManager
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
         
            //caso de ser nuevo id=0
            if (proceso.getIdprocesoempadronamiento()==0){
               em.persist(proceso);
            }else{//actualiza
                em.merge(proceso);
            }
        
         em.getTransaction().commit();
         em.close();
         emf.close(); 
         rOK=true;
         
         return rOK;
         
      }catch(Exception ex){
          //JOptionPane.showMessageDialog(null, "Error al grabar datos"+ex.getMessage());
          //return false;
      } 
      return false;
    }
    
    
    public List findAll(){
        List lista=null;
        try{
            
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
            EntityManager em = emf.createEntityManager();
            Query query=em.createNamedQuery("Procesoempadronamiento.findAll");
            
            lista=query.getResultList();
            
            em.getTransaction().commit();
            em.close();    
            emf.close();
            
            return lista;
            
        }catch(Exception ex){
              //  JOptionPane.showMessageDialog(null, ex.getMessage());
        }
        return lista;
    }

    
     public Procesoempadronamiento finById(int id){
        Procesoempadronamiento proceso=null;
        try{
            
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
            EntityManager em = emf.createEntityManager();
            proceso = em.find(Procesoempadronamiento.class, id);
            em.getTransaction().commit();
            em.close();    
            emf.close();
        }catch(Exception ex){

        }
        return proceso;
    }
     
      public List finByProcElectoral(int idProcElect){
        Procesoempadronamiento proceso=null;
        List lstProcesosEmpadr=null;
        try{
            
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
            EntityManager em = emf.createEntityManager();
            
            Query query=em.createQuery("SELECT p FROM Procesoempadronamiento p WHERE p.idprocesoelectoral.idprocesoelectoral = ?1 ") ;
            query.setParameter(1, idProcElect);
            lstProcesosEmpadr=query.getResultList();
            em.close();    
            emf.close();
            System.out.println(lstProcesosEmpadr.size());
            return lstProcesosEmpadr;
            
        }catch(Exception ex){
            System.out.println(ex.getMessage());
        }        
        
        return lstProcesosEmpadr;
    }
    
     
      
       public List finByCriterios(Procesoempadronamiento proceso){
        List lstProcesosEmpadr=null;
        try{
            String sSql="SELECT p FROM Procesoempadronamiento p WHERE 1=1  ";
                    if (proceso.getDescripcion().trim().length()>0)
                    sSql+= "and  upper(p.descripcion) like upper(?1)   ";
                    if (proceso.getIdtipoempadronamiento().getIdtipoempadronamiento()>0)
                    sSql+= " and p.idtipoempadronamiento.idtipoempadronamiento = ?2 ";
                    if (proceso.getIdestadoprocesoempadronamiento().getIdestadoprocesoempadronamiento()>0)
                    sSql+= " and p.idestadoprocesoempadronamiento.idestadoprocesoempadronamiento = ?3 ";
                    if (proceso.getFechainicio()!=null)
                    sSql+=" and p.fechainicio>= ?4 ";
                    if (proceso.getFechafin()!=null)
                    sSql+=" and p.fechainicio<= ?5 ";
            
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
            EntityManager em = emf.createEntityManager();
            
            Query query=em.createQuery(sSql) ;
            if (proceso.getDescripcion().trim().length()>0)
            query.setParameter(1, "%"+proceso.getDescripcion()+"%");
            if (proceso.getIdtipoempadronamiento().getIdtipoempadronamiento()>0)
            query.setParameter(2, proceso.getIdtipoempadronamiento().getIdtipoempadronamiento());
            if (proceso.getIdestadoprocesoempadronamiento().getIdestadoprocesoempadronamiento()>0)
            query.setParameter(3, proceso.getIdestadoprocesoempadronamiento().getIdestadoprocesoempadronamiento());
            if (proceso.getFechainicio()!=null)
            query.setParameter(4, proceso.getFechainicio());
            if (proceso.getFechafin()!=null)
            query.setParameter(5, proceso.getFechafin());
                    
            lstProcesosEmpadr=query.getResultList();
            em.close();    
            emf.close();
            
            return lstProcesosEmpadr;
            
        }catch(Exception ex){
            System.out.println(ex.getMessage());
        }        
        
        return lstProcesosEmpadr;
    }
     
}
